[−][src]Crate flatgeobuf
FlatGeobuf is a performant binary encoding for geographic data based on flatbuffers that can hold a collection of Simple Features including circular interpolations as defined by SQL-MM Part 3.
Installation
[dependencies]
flatgeobuf = "0.3"
Reading a FlatGeobuf file
use flatgeobuf::*; let mut filein = BufReader::new(File::open("countries.fgb")?); let mut fgb = FgbReader::open(&mut filein)?; fgb.select_bbox(8.8, 47.2, 9.5, 55.3)?; while let Some(feature) = fgb.next()? { let props = feature.properties()?; println!("{}", props["name"]); }
Zero-copy geometry reader
Geometries can be accessed by implementing the GeomProcessor
trait.
use geozero::{GeomProcessor, error::Result}; struct CoordPrinter; impl GeomProcessor for CoordPrinter { fn xy(&mut self, x: f64, y: f64, _idx: usize) -> Result<()> { println!("({} {})", x, y); Ok(()) } } let mut coord_printer = CoordPrinter {}; let geometry = feature.geometry().unwrap(); geometry.process(&mut coord_printer, geometry_type)?;
Zero-copy feature access
Properties can be accessed by implementing the PropertyProcessor
trait.
use geozero::{PropertyProcessor, ColumnValue, error::Result}; struct PropertyPrinter; impl PropertyProcessor for PropertyPrinter { fn property(&mut self, i: usize, n: &str, v: &ColumnValue) -> Result<bool> { println!("columnidx: {} name: {} value: {:?}", i, n, v); Ok(false) // don't abort } } let mut prop_printer = PropertyPrinter {}; let _ = feature.process_properties(&mut prop_printer)?;
Reading FlatGeobuf via HTTP
use flatgeobuf::*; let mut fgb = HttpFgbReader::open("https://pkg.sourcepole.ch/countries.fgb").await?; fgb.select_bbox(8.8, 47.2, 9.5, 55.3).await?; while let Some(feature) = fgb.next().await? { let props = feature.properties()?; println!("{}", props["name"]); }
Structs
BufferedHttpRangeClient | HTTP client for HTTP Range requests with a buffer optimized for sequential requests |
Column | |
ColumnArgs | |
ColumnBuilder | |
Crs | |
CrsArgs | |
CrsBuilder | |
Driver | |
Feature | |
FeatureArgs | |
FeatureBuilder | |
FgbFeature | Access to current feature |
FgbReader | FlatGeobuf dataset reader |
Geometry | |
GeometryArgs | |
GeometryBuilder | |
Header | |
HeaderArgs | |
HeaderBuilder | |
HttpDriver | |
HttpFgbReader | FlatGeobuf dataset HTTP reader |
NodeItem | R-Tree node |
PackedRTree | Packed Hilbert R-Tree |
SearchResultItem | Bbox filter search result |
Enums
ColumnOffset | |
ColumnType | |
CrsOffset | |
FeatureOffset | |
GeometryOffset | |
GeometryType | |
HeaderOffset |
Constants
Traits
FallibleStreamingIterator | A fallible, streaming iterator. |
FeatureAccess | Feature processing API |
FeatureGeometry | Feature properties processing API |
FeatureProperties | Feature properties processing API |